package com.smart.community.region.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.smart.community.region.dto.ShopOwnerRelationDTO;
import com.smart.community.region.entity.ShopOwnerRelation;
import com.smart.community.region.vo.ShopOwnerRelationVO;

/**
 * 店铺业主关联服务接口
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-01-30
 */
public interface IShopOwnerRelationService extends IService<ShopOwnerRelation> {
    
    /**
     * 分页查询店铺业主关联列表
     * 
     * @param page 分页参数
     * @param shopId 店铺ID
     * @param ownerId 业主ID
     * @param relationType 关系类型
     * @param status 状态
     * @return 分页结果
     */
    IPage<ShopOwnerRelationVO> getShopOwnerRelationPage(Page<ShopOwnerRelation> page, Long shopId, Long ownerId, Integer relationType, Integer status);
    
    /**
     * 根据ID查询店铺业主关联详情
     * 
     * @param id 关联ID
     * @return 关联详情
     */
    ShopOwnerRelationVO getShopOwnerRelationById(Long id);
    
    /**
     * 创建店铺业主关联
     * 
     * @param relationDTO 关联信息
     * @return 关联ID
     */
    Long createShopOwnerRelation(ShopOwnerRelationDTO relationDTO);
    
    /**
     * 更新店铺业主关联
     * 
     * @param id 关联ID
     * @param relationDTO 关联信息
     * @return 是否成功
     */
    boolean updateShopOwnerRelation(Long id, ShopOwnerRelationDTO relationDTO);
    
    /**
     * 删除店铺业主关联
     * 
     * @param id 关联ID
     * @return 是否成功
     */
    boolean deleteShopOwnerRelation(Long id);
    
    /**
     * 根据店铺ID查询业主列表
     * 
     * @param shopId 店铺ID
     * @return 业主列表
     */
    List<ShopOwnerRelationVO> getOwnersByShopId(Long shopId);
    
    /**
     * 根据业主ID查询关联店铺列表
     * 
     * @param ownerId 业主ID
     * @return 店铺列表
     */
    List<ShopOwnerRelationVO> getShopsByOwnerId(Long ownerId);
    
    /**
     * 批量设置店铺业主关联
     * 
     * @param relationList 关联列表
     * @return 是否成功
     */
    boolean batchSetShopOwnerRelations(List<ShopOwnerRelationDTO> relationList);
    
    /**
     * 获取店铺主要联系人
     * 
     * @param shopId 店铺ID
     * @return 主要联系人信息
     */
    ShopOwnerRelationVO getPrimaryContactByShopId(Long shopId);
}